unit untRelMovProdutos;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, untRelPadrao, Menus, cxLookAndFeelPainters, DB, IBCustomDataSet,
  IBQuery, ppParameter, ppBands, ppCtrls, jpeg, ppPrnabl, ppClass, ppCache,
  ppProd, ppReport, ppEndUsr, ppDB, ppComm, ppRelatv, ppDBPipe, ImgList,
  cxGraphics, ActnList, StdCtrls, cxButtons, ExtCtrls,  cxLabel,
  cxControls, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit,
  cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox, cxCalendar, cxDBEdit,
  cxGroupBox, ppStrtch, ppSubRpt, ppVar, ppModule, raCodMod, dxmdaset,
  daDataModule, Grids, DBGrids, cxLookAndFeels, dxSkinsCore, dxSkinBlack,
  dxSkinBlue, dxSkinCaramel, dxSkinCoffee, dxSkinDarkRoom, dxSkinDarkSide,
  dxSkinFoggy, dxSkinGlassOceans, dxSkiniMaginary, dxSkinLilian,
  dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin, dxSkinMoneyTwins,
  dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green,
  dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinOffice2010Black,
  dxSkinOffice2010Blue, dxSkinOffice2010Silver, dxSkinPumpkin, dxSkinSeven,
  dxSkinSharp, dxSkinSilver, dxSkinSpringTime, dxSkinStardust,
  dxSkinSummer2008, dxSkinsDefaultPainters, dxSkinValentine,
  dxSkinXmas2008Blue, ACBrBase, ACBrEnterTab, DBCtrls, cxImage;

type
  TfrmRelMovProdutos = class(TfrmRelPadrao)
    dsOperacoes: TDataSource;
    lstOperacoes: TIBQuery;
    lstOperacoesCODIGO: TIntegerField;
    lstOperacoesNOME: TIBStringField;
    lstProdutos: TIBQuery;
    lstProdutosCODIGO: TIntegerField;
    lstProdutosNOME: TIBStringField;
    dsProdutos: TDataSource;
    dsPropriedade: TDataSource;
    lstPropriedade: TIBQuery;
    lstPropriedadeCODIGO: TIntegerField;
    lstPropriedadeNOME: TIBStringField;
    lstTerceiro: TIBQuery;
    lstTerceiroCODIGO: TIntegerField;
    lstTerceiroNOME: TIBStringField;
    dsTerceiro: TDataSource;
    lstProdutores: TIBQuery;
    lstProdutoresCODIGO: TIntegerField;
    lstProdutoresNOME: TIBStringField;
    dsProdutor: TDataSource;
    DtlstRelNOME_PRODUTOR: TIBStringField;
    DtlstRelCOD_PRODUTOR: TIntegerField;
    DtlstRelNOME_TERCEIRO: TIBStringField;
    DtlstRelCOD_TERCEIRO: TIntegerField;
    DtlstRelCOD_PRODUTO: TIntegerField;
    DtlstRelCOD_PROPRIEDADE: TIntegerField;
    DtlstRelNOME_PROPRIEDADE: TIBStringField;
    DtlstRelNOME_PRODUTO: TIBStringField;
    DtlstRelNFP: TIntegerField;
    DtlstRelNF: TIBStringField;
    DtlstRelQTDE: TIBBCDField;
    DtlstRelVALOR_ITEM: TIBBCDField;
    DtlstRelTOTAL_ITEM: TIBBCDField;
    DtlstRelCOD_OPERACAO: TIntegerField;
    DtlstRelNOME_OPERACAO: TIBStringField;
    cxGroupBox1: TcxGroupBox;
    cxLabel1: TcxLabel;
    cxLabel16: TcxLabel;
    cxLabel5: TcxLabel;
    cxLabel19: TcxLabel;
    cxLabel7: TcxLabel;
    cxLabel6: TcxLabel;
    cxLabel2: TcxLabel;
    edtData2: TcxDBDateEdit;
    edtData1: TcxDBDateEdit;
    cbTerceiro: TcxDBLookupComboBox;
    cbOperacao: TcxDBLookupComboBox;
    cbProduto: TcxDBLookupComboBox;
    cbPropriedade: TcxDBLookupComboBox;
    cbProdutor: TcxDBLookupComboBox;
    cxGroupBox2: TcxGroupBox;
    cbGrupo: TcxComboBox;
    edtRelCODIGO: TIntegerField;
    edtRelREL_MOV_PRODUTOS: TMemoField;
    edtRelCODIGO2: TIBStringField;
    mtbFiltroPRODUTOR: TIntegerField;
    mtbFiltroPROPRIEDADE: TIntegerField;
    mtbFiltroPRODUTO: TIntegerField;
    mtbFiltroOPERACAO: TIntegerField;
    mtbFiltroTERCEIRO: TIntegerField;
    mtbFiltroDATA1: TDateField;
    mtbFiltroDATA2: TDateField;
    DtlstRelDT_DOCTO: TDateField;
    dsLstRelTotaliza: TDataSource;
    ppRelTotaliza: TppDBPipeline;
    DtlstRelTotaliza: TIBQuery;
    rptRel: TppReport;
    ppParameterList1: TppParameterList;
    Designer_Rel: TppDesigner;
    ppRel: TppDBPipeline;
    ppLayoutRel: TppDBPipeline;
    ppDadosLicenca: TppDBPipeline;
    ppTitleBand6: TppTitleBand;
    ppLine1: TppLine;
    ppLine2: TppLine;
    ppLabel1: TppLabel;
    ppSystemVariable2: TppSystemVariable;
    ppLine5: TppLine;
    ppLabel10: TppLabel;
    ppImage1: TppImage;
    ppLabel19: TppLabel;
    ppLabel29: TppLabel;
    ppLabel38: TppLabel;
    ppLabel43: TppLabel;
    ppLabel44: TppLabel;
    ppLabel45: TppLabel;
    ppDBText9: TppDBText;
    ppDBText18: TppDBText;
    ppLine6: TppLine;
    ppHeaderBand1: TppHeaderBand;
    SubProduto: TppSubReport;
    ppChildReport1: TppChildReport;
    ppHeaderBand2: TppHeaderBand;
    ppShape1: TppShape;
    ppLabel5: TppLabel;
    ppLabel6: TppLabel;
    ppLabel7: TppLabel;
    ppLabel8: TppLabel;
    ppLabel9: TppLabel;
    ppLabel11: TppLabel;
    ppDetailBand1: TppDetailBand;
    ppShape3: TppShape;
    ppDBText4: TppDBText;
    ppDBText5: TppDBText;
    ppDBText6: TppDBText;
    ppDBText7: TppDBText;
    ppDBText8: TppDBText;
    ppDBText10: TppDBText;
    ppFooterBand1: TppFooterBand;
    ppGroup1: TppGroup;
    ppGroupHeaderBand1: TppGroupHeaderBand;
    ppShape2: TppShape;
    ppDBText1: TppDBText;
    ppLabel12: TppLabel;
    ppGroupFooterBand1: TppGroupFooterBand;
    ppShape4: TppShape;
    ppDBCalc1: TppDBCalc;
    ppDBCalc2: TppDBCalc;
    ppGroup5: TppGroup;
    ppGroupHeaderBand5: TppGroupHeaderBand;
    ppShape10: TppShape;
    ppLabel2: TppLabel;
    ppDBText2: TppDBText;
    ppGroupFooterBand5: TppGroupFooterBand;
    ppShape14: TppShape;
    ppDBCalc9: TppDBCalc;
    ppDBCalc10: TppDBCalc;
    ppSubReport1: TppSubReport;
    ppChildReport2: TppChildReport;
    ppHeaderBand3: TppHeaderBand;
    ppShape5: TppShape;
    ppLabel4: TppLabel;
    ppLabel13: TppLabel;
    ppLabel14: TppLabel;
    ppLabel15: TppLabel;
    ppLabel16: TppLabel;
    ppLabel17: TppLabel;
    ppLabel18: TppLabel;
    ppLabel20: TppLabel;
    ppDetailBand2: TppDetailBand;
    ppShape6: TppShape;
    ppDBText11: TppDBText;
    ppDBText12: TppDBText;
    ppDBText13: TppDBText;
    ppDBText14: TppDBText;
    ppDBText15: TppDBText;
    ppDBText16: TppDBText;
    ppDBText17: TppDBText;
    ppDBText19: TppDBText;
    ppFooterBand2: TppFooterBand;
    ppGroup2: TppGroup;
    ppGroupHeaderBand2: TppGroupHeaderBand;
    ppShape7: TppShape;
    ppDBText20: TppDBText;
    ppLabel21: TppLabel;
    ppGroupFooterBand2: TppGroupFooterBand;
    ppShape8: TppShape;
    ppDBCalc3: TppDBCalc;
    ppDBCalc4: TppDBCalc;
    ppSubReport2: TppSubReport;
    ppChildReport3: TppChildReport;
    ppHeaderBand4: TppHeaderBand;
    ppShape9: TppShape;
    ppLabel22: TppLabel;
    ppLabel25: TppLabel;
    ppLabel26: TppLabel;
    ppLabel27: TppLabel;
    ppLabel28: TppLabel;
    ppLabel30: TppLabel;
    ppDetailBand3: TppDetailBand;
    ppDBText21: TppDBText;
    ppDBText23: TppDBText;
    ppDBText25: TppDBText;
    ppDBText26: TppDBText;
    ppDBText27: TppDBText;
    ppDBText29: TppDBText;
    ppFooterBand3: TppFooterBand;
    ppGroup3: TppGroup;
    ppGroupHeaderBand3: TppGroupHeaderBand;
    ppShape11: TppShape;
    ppDBText30: TppDBText;
    ppLabel31: TppLabel;
    ppGroupFooterBand3: TppGroupFooterBand;
    ppShape12: TppShape;
    ppDBCalc5: TppDBCalc;
    ppDBCalc6: TppDBCalc;
    ppSubReport3: TppSubReport;
    ppChildReport4: TppChildReport;
    ppHeaderBand5: TppHeaderBand;
    ppShape13: TppShape;
    ppLabel32: TppLabel;
    ppLabel34: TppLabel;
    ppLabel35: TppLabel;
    ppLabel36: TppLabel;
    ppLabel37: TppLabel;
    ppLabel39: TppLabel;
    ppDetailBand4: TppDetailBand;
    ppDBText31: TppDBText;
    ppDBText33: TppDBText;
    ppDBText35: TppDBText;
    ppDBText36: TppDBText;
    ppDBText37: TppDBText;
    ppDBText39: TppDBText;
    ppFooterBand4: TppFooterBand;
    ppGroup4: TppGroup;
    ppGroupHeaderBand4: TppGroupHeaderBand;
    ppShape15: TppShape;
    ppDBText40: TppDBText;
    ppLabel41: TppLabel;
    ppGroupFooterBand4: TppGroupFooterBand;
    ppShape16: TppShape;
    ppDBCalc7: TppDBCalc;
    ppDBCalc8: TppDBCalc;
    ppDetailBand30: TppDetailBand;
    ppFooterBand5: TppFooterBand;
    ppLine3: TppLine;
    ppLine4: TppLine;
    ppSystemVariable1: TppSystemVariable;
    ppLabel42: TppLabel;
    ppSummaryBand2: TppSummaryBand;
    procedure FormShow(Sender: TObject);
    procedure ActOKExecute(Sender: TObject);
    procedure ActConfigurarExecute(Sender: TObject);
    procedure mtbFiltroPRODUTORChange(Sender: TField);
    procedure mtbFiltroDATA1Change(Sender: TField);
    procedure mtbFiltroDATA2Change(Sender: TField);
  private
    { Private declarations }
    procedure abreconsultas;
  public
    { Public declarations }
  end;

var
  frmRelMovProdutos: TfrmRelMovProdutos;

implementation

uses DateUtils, untPrincipal;

{$R *.dfm}

procedure TfrmRelMovProdutos.abreconsultas;
begin
  if ((edtData1.Date <= 0) or (edtData2.Date <= 0)) then
    exit;
    
  lstTerceiro.Close;
  lstTerceiro.ParamByName('data1').value := edtData1.Date;
  lstTerceiro.ParamByName('data2').value := edtData2.Date;
  lstTerceiro.ParamByName('codigo').value := mtbFiltroPRODUTOR.Value;
  lstTerceiro.Open;

  lstProdutos.Close;
  lstProdutos.ParamByName('data1').value := edtData1.Date;
  lstProdutos.ParamByName('data2').value := edtData2.Date;
  lstProdutos.ParamByName('codigo').value := mtbFiltroPRODUTOR.Value;
  lstProdutos.Open;

  lstPropriedade.Close;
  lstPropriedade.ParamByName('data1').value := edtData1.Date;
  lstPropriedade.ParamByName('data2').value := edtData2.Date;
  lstPropriedade.ParamByName('codigo').value := mtbFiltroPRODUTOR.Value;
  lstPropriedade.Open;


  lstOperacoes.Close;
  lstOperacoes.ParamByName('data1').value := edtData1.Date;
  lstOperacoes.ParamByName('data2').value := edtData2.Date;
  lstOperacoes.ParamByName('codigo').value := mtbFiltroPRODUTOR.Value;
  lstOperacoes.Open;
end;

procedure TfrmRelMovProdutos.FormShow(Sender: TObject);
begin
  inherited;
  lstProdutores.Close;
  lstProdutores.Open;

  abreconsultas;

  cbProdutor.SetFocus;
  cbGrupo.ItemIndex := 0;
  mtbFiltroDATA1.value := Date;
  mtbFiltroDATA2.value := Date;
end;

procedure TfrmRelMovProdutos.ActOKExecute(Sender: TObject);
var
  order,subrel,subrel2 : string;
  i : integer;
begin
  inherited;

  edtRel.close;
  edtRel.parambyname('codigo').value := 1;
  edtRel.Open;

  rptRel.Template.DatabaseSettings.Name := '1';
  rptRel.Template.LoadFromDatabase;

  case cbGrupo.ItemIndex of
    0 : begin //Produto
          order := ' order by cod_produto, cod_operacao ';
          subrel := 'SubProduto';
        end;
    1 : begin //Terceiro
          order := ' order by cod_terceiro ';
          subrel := 'SubTerceiro';
        end;
    2 : begin //Propriedade
          order := ' order by cod_propriedade ';
          subrel := 'SubPropriedade';
        end;
    3 : begin //Data
          order := ' order by dt_docto ';
          subrel := 'SubData';
        end;
  end ;

  subrel2 := 'SubTotaliza';
  for i := 0 to ComponentCount - 1 do
  begin
    if Components[i] is TppSubReport then
    begin
      if (uppercase(TppSubReport(Components[i]).UserName) = uppercase(subrel)) or (uppercase(TppSubReport(Components[i]).UserName) = uppercase(subrel2)) then
        TppSubReport(Components[i]).Visible := true
      else
        TppSubReport(Components[i]).Visible := false;
    end
    else if (frmRelMovProdutos.Components[I] is TppHeaderBand) then
       TppHeaderBand(frmRelMovProdutos.Components[I]).BeforePrint := HabilitaHeader;
  end;

  DtlstRel.Close;
  DtlstRel.SQL.Text := sqloriginal + order;
  DtlstRel.ParamByName('produtor').value := mtbFiltroPRODUTOR.AsInteger;
  DtlstRel.ParamByName('propriedade').value := mtbFiltroPROPRIEDADE.AsInteger;
  DtlstRel.ParamByName('data1').AsDate := mtbFiltroDATA1.AsDateTime;
  DtlstRel.ParamByName('data2').AsDate := mtbFiltroDATA2.AsDateTime;
  DtlstRel.ParamByName('produto').value := mtbFiltroPRODUTO.AsInteger;
  DtlstRel.ParamByName('terceiro').value := mtbFiltroTERCEIRO.AsInteger;
  DtlstRel.ParamByName('operacao').value := mtbFiltroOPERACAO.AsInteger;
  DtlstRel.Open;


  DtlstRelTotaliza.Close;
  DtlstRelTotaliza.ParamByName('produtor').value := mtbFiltroPRODUTOR.AsInteger;
  DtlstRelTotaliza.ParamByName('propriedade').value := mtbFiltroPROPRIEDADE.AsInteger;
  DtlstRelTotaliza.ParamByName('data1').AsDate := mtbFiltroDATA1.AsDateTime;
  DtlstRelTotaliza.ParamByName('data2').AsDate := mtbFiltroDATA2.AsDateTime;
  DtlstRelTotaliza.ParamByName('produto').value := mtbFiltroPRODUTO.AsInteger;
  DtlstRelTotaliza.ParamByName('terceiro').value := mtbFiltroTERCEIRO.AsInteger;
  DtlstRelTotaliza.ParamByName('operacao').value := mtbFiltroOPERACAO.AsInteger;
  DtlstRelTotaliza.Open;


  rptRel.Print;
end;



procedure TfrmRelMovProdutos.ActConfigurarExecute(Sender: TObject);
begin
  inherited;
 ConfigRel(rptRel,Designer_Rel);
end;

procedure TfrmRelMovProdutos.mtbFiltroPRODUTORChange(Sender: TField);
begin
  inherited;
    abreconsultas;
end;

procedure TfrmRelMovProdutos.mtbFiltroDATA1Change(Sender: TField);
begin
  inherited;
  abreconsultas;
end;

procedure TfrmRelMovProdutos.mtbFiltroDATA2Change(Sender: TField);
begin
  inherited;
  abreconsultas;
end;

end.
